Tracking hot areas of disk drive

ABSTRACT

Methods, apparatuses, systems, and devices are described for determining use of areas of a disk drive. In one method, a score of an area node of the disk drive may be increased each time the area node is accessed during a time interval of a series of time intervals. When each time interval elapses, each existing score of the area nodes (e.g., scores of area nodes that have non-zero scores) may be decreased. Further, after being decreased, each existing score may be saved. In such a manner, a time series analysis of data accesses may be implemented. The increases in score may account for the number of accesses during a given interval, and the decreases in score may account for time passage (e.g., time-weighting the scores). Thus, more frequent accesses and more recent accesses result in higher accumulated scores for the corresponding area nodes.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/533,891, filed on 5 Nov. 2014, and entitled TRACKING HOT AREAS OFDISK DRIVE, pending, the disclosure of which is incorporated in itsentirety by this reference.

SUMMARY

The described features generally relate to one or more improved systems,methods, and/or apparatuses for tracking hot areas of a data storagedrive. More particularly, the described features relate to techniquesassessing use of data on a drive by identifying hot areas. In general,the techniques may take into account a time series analysis of data useon the drive.

The areas on the drive may be referred to as area nodes defined by astarting logical block address (LBA) and a length (e.g., number ofblocks). In one example, each access to an area node during a timeinterval may cause an increase (e.g., an increment) in a score for thatarea node. At an end of the time interval, any existing score for eacharea node may be decreased (e.g., by multiplying by a factor less thanone). The resulting scores for the area nodes may be evaluated todetermine which of the area nodes may be hot areas.

For example, the resulting scores may be ordered from highest to lowest,and a certain number of area nodes having the highest scores may beidentified as hot areas. Alternatively, or additionally, the scores ofthe area nodes may be compared with a threshold score to determine whichare hot areas. Alternatively or additionally, the hot areas may bedetermined based on a desired or certain size (e.g., total number ofblocks) of the area nodes to be considered hot areas.

A method of determining use of areas of a disk drive is also described.According to one implementation, the method may involve increasing ascore of an area node of the disk drive each time the area node isaccessed during a time interval of a series of time intervals. For eacharea node of the disk drive having an existing score, the existing scoremay be decreased based on an elapse of the time interval. The existingscore of each area node may be saved at an end of the time interval.

In some examples, the method may involve determining at least one areanode as a hot area of the disk drive based at least in part on theexisting score of each area node at an end of one of the time intervals.

In some examples, the method may involve determining a certain number ofarea nodes having highest existing score(s) at an end of one of the timeintervals as hot area(s) of the disk drive.

In some examples, decreasing the existing score may involve multiplyingthe existing score by a factor less than one.

In some examples, increasing the score of the area node may involveadding a predetermined base score to the score of the area node. In suchexamples, the method may involve determining that an area node that isaccessed during the time interval overlaps with another area node thathas an existing score. In such case, the method may involve splittingthe area node having the existing score into an overlap area nodecorresponding to the overlap and at least one other area node (anon-overlap node). The score of the overlap area node may be theexisting score plus the predetermined base score and the score of the atleast one other area node may be the existing score. If a new area nodeincludes an area node with an existing score, the new area node may besplit with the new part getting the base score.

Alternatively, or additionally, the method may involve determining thatan area node that is accessed during the time interval is adjacent toanother area node that has an existing score. In such case, the methodmay involve merging the accessed area node with the area node having theexisting score. The score of the merged area node may be the existingscore.

In some examples, saving the existing score of each area node mayinvolve saving the existing score of each area node in a table ofcandidate hot areas. In such examples, the method may involvedetermining at least one area node as a hot area of the disk drive basedat least in part on the existing score of each area node in the table.The method further may involve determining a certain number of areanodes having highest existing score(s) in the table as hot area(s) ofthe disk drive, or determining hot areas based on a desired or certainsize (e.g., total number of blocks) of the area nodes to be consideredhot areas.

A computing device is described. According to one implementation, thecomputing device may include a data storage drive, a processorconfigured to access area nodes of the data storage drive, and aninput/output device configured to cause the processor to access areanodes on the data storage drive. The processor may be configured todetermine at least one hot area of the data storage drive based at leastin part on existing scores for area nodes accessed by the processor. Theprocessor may increase a score of an area node of the data storage driveeach time the area node is accessed during a time interval of a seriesof time intervals and may decrease the score of the area node based onan elapse of the time interval. The computing device may include theseand/or other elements configured to carry out various operations of themethods described above and herein.

An apparatus for determining use of areas of a disk drive is alsodescribed. According to one implementation, the apparatus may include adisk drive, a processor configured to access area nodes of the diskdrive, and a timing device configured to determine a series of timeintervals. The processor may be configured to determine access of thearea nodes during a time interval of the series of time intervals. Theprocessor may increase a score of an area node of the disk drive eachtime the area node is accessed and may decrease the score of the areanode based on an elapse of the time interval. The apparatus may includethese and/or other elements configured to carry out various operationsof the methods described above and herein.

Further scope of the applicability of the described methods andapparatuses will become apparent from the following detaileddescription, claims, and drawings. The detailed description and specificexamples are given by way of illustration only, since various changesand modifications within the scope of the description will becomeapparent to those skilled in the art.

BRIEF DESCRIPTION OF THE DRAWINGS

A further understanding of the nature and advantages of the presentdisclosure may be realized by reference to the following drawings. Inthe appended figures, similar components or features may have the samereference label. Further, various components of the same type may bedistinguished by following the reference label by a dash and a secondlabel that distinguishes among the similar components. If only the firstreference label is used in the specification, the description isapplicable to any one of the similar components having the same firstreference label irrespective of the second reference label.

FIG. 1 is a block diagram of a computing system, in accordance withvarious embodiments;

FIG. 2 is a block diagram of a computing device, in accordance withvarious embodiments;

FIG. 3 is a block diagram of a data storage device, in accordance withvarious embodiments;

FIG. 4 is a flowchart illustrating an example of a method of determininguse of areas of a disk drive, in accordance with various embodiments;

FIG. 5 is a flowchart illustrating another example of a method ofdetermining use of areas of a disk drive, in accordance with variousembodiments; and

FIGS. 6A-6L are a series of diagrams illustrating an example of scoringand determining hot areas, in accordance with various embodiments.

DETAILED DESCRIPTION

The following relates generally to determining use of areas of a diskdrive, and more specifically to determining hot areas in a manner thattakes into account a time series of events.

Determining hot areas of a disk drive, or other storage device, mayallow storage space on the drive to be allocated efficiently. Hot areasmay be defined as area nodes of the disk drive (e.g., defined bystarting LBA and length) that are frequently accessed. In some cases, adisk drive may be tiered or may include a cache. When tiered, differenttiers may have different access speeds for accessing data storedthereon. Similarly, the cache of a disk drive may provide quicker accessto data, as compared to a remainder of the disk drive. In such cases,frequently accessed data may be stored in the area(s) of the disk drivethat provide quicker access to the data.

Frequent read accesses of data may indicate that the data is importantor valuable. Employing a read buffer of the cache for area nodes thatare determined as such to be hot areas may increase performance byholding the important or valuable data that is more likely to result incache hits. Frequent write accesses of data may indicate that the datais temporary or is more subject to changes. Employing a write buffer ofthe cache for area nodes that are determined as such to be hot areas maydecrease work amplification by holding the temporary data that may soonbe replaced (e.g., avoid writing such data to more permanent storage ofthe disk drive each time the data is changed).

Therefore, determining use of areas (e.g., determining hot areas) of adisk drive is described. According to one implementation, a method ofdetermining use of areas of a disk drive may involve increasing a scoreof an area node of the disk drive each time the area node is accessedduring a time interval of a series of time intervals. For example, thescore of an area node may be increased by a set amount or base scoreeach time that area node is accessed during a time interval.

When each time interval elapses, each existing score of the area nodes(e.g., scores of area nodes that have non-zero scores) may be decreased.For example, each existing score may be multiplied by a factor less thanone. Further, after being decreased, each existing score may be saved.

In such a manner, a time series analysis of data accesses may beimplemented. The increases in score may account for the number ofaccesses during a given interval, and the decreases in score may accountfor time passage (e.g., time-weighting the scores). Thus, more frequentaccesses and more recent accesses result in higher accumulated scoresfor the corresponding area nodes.

In some cases, the time intervals may be uniform in length andsuccessive. Alternatively, the time intervals may vary in length and/ormay be non-successive. In the case of time intervals of varying length,decreasing the existing scores at the end of each time interval may bebased on the length of the respective time interval. For example, apredetermined length of time interval may have an associatedpredetermined factor, and a fraction of the predetermined factor may beused for time intervals longer than the predetermined length. Thus, thescores may be normalized, for example, based on working time (e.g.,excluding idle time). The fraction may be selected to decrease the scorebased on the length of the time interval (e.g., proportional).

As described further herein, area node(s) may be determined to be hotarea(s) using the scores saved at the end of any or all of theintervals. In some cases, determining hot areas may be performedperiodically (e.g., after elapse of a certain number of time intervals)to use scores resulting from many accesses. Further, as appropriate ordesired, the decreasing of scores at the end of a particular timeinterval may be omitted or skipped when the particular time intervaldoes not have sufficient accesses (e.g., working time is small and idletime is large). For example, when no accesses occur in the particulartime interval (e.g., entire time interval is idle time), applying atime-weight to the scores for that time interval may renderdiscrimination of scores unnecessarily low. Thus, the decreasing may notbe performed for the particular time interval.

The following description provides examples, and is not limiting of thescope, applicability, or configuration set forth in the claims. Changesmay be made in the function and arrangement of elements discussedwithout departing from the scope of the disclosure. Various embodimentsmay omit, substitute, or add various procedures or components asappropriate. For instance, the methods described may be performed in anorder different from that described, and various steps may be added,omitted, or combined. Also, features described with respect to certainembodiments may be combined in other embodiments.

Referring first to FIG. 1, a block diagram of a computing system 100 inaccordance with various aspects of the present disclosure is shown. Thecomputing system 100 may include a database or data storage device 105,such as a disk drive. The computing system 100 may be a distributedsystem in which multiple computing devices 110 may access data stored onthe data storage device 105 and/or store (e.g., write) data on the datastorage device 105. As such, the computing system 100 may be anenterprise system employing centralized data storage, or may be anexample of unrelated computing devices 110 employing remote data storage(e.g., “the cloud”).

Thus, each of the computing devices 110 may communicate, via arespective communication link 115, with the data storage device 105 toaccess data (e.g., read or write). The communication links 115 may bewireless (e.g., employing various radio access technologies), asappropriate or desired. Although wireless communication links 115 areillustrated in FIG. 1, it should be understood that wired communicationlinks are possible as well.

Each of the computing devices 110 may be, for example, a laptopcomputer, a notebook computer, a netbook computer, a tablet computer, asmartphone, or the like. Thus, according to some aspects, the computingdevices 110 may be portable or mobile. Additionally or alternatively,each of the computing devices 110 may be, for example, a desktopcomputer, a mainframe computer, or the like.

In accordance with one implementation, the data storage device 105 maybe configured to identify or otherwise determine area nodes that arefrequently accessed by the computing devices 110 (e.g., determine hotareas), such as described herein. The data storage device 105 maydetermine hot areas for the computing devices 110 collectively, such asin an enterprise system, or may determine hot areas for each of thecomputing devices 110 individually. When determined individually, thedata storage device 105 may have dedicated portions, caches or portionsof a cache for each of the respective computing devices 110. As such,the hot areas respectively determined for the individual computingdevices 110 may be used to determine what data to store in therespective dedicated portions, such as described herein.

FIG. 2 shows a block diagram that illustrates an example of computingdevice 210, in accordance with various aspects of the presentdisclosure. The computing device 210 may be an example of the computingdevices 110 described above with respect to FIG. 1, for example.According to this example, the computing device 210 may include a datastorage drive 205, such as a disk drive. The computing device 210 alsomay include a processor 215 configured to access (e.g., read/write) dataon the data storage drive 205. The computing device 210 further mayinclude an input/output (I/O) interface 220, such as a keyboard, amouse, a touchscreen, or the like, that is configured to cause theprocessor 215 to access data on the data storage drive 205. It should beunderstood, however, that some instances of data access may be performedby the processor 215 without receiving a command from the I/O interface220.

In the example of FIG. 2, the processor 215 and/or the data storagedrive 205 may be configured to identify or otherwise determine areanodes that are frequently accessed by the processor 215 (e.g., determinehot areas), such as described herein. As described further herein, thedetermined hot areas may be used to determine what data to store indifferent portions (e.g., having different access speeds) of the datastorage drive 205.

FIG. 3 shows a block diagram that illustrates an example of a datastorage device 305, in accordance with various aspects of the presentdisclosure. The data storage device 305 may be an example of the datastorage device 105 described above with respect to FIG. 1 or the datastorage drive 205 described above with respect to FIG. 2, for example.

The data storage device 305 may include a disk drive 310. According tothis example, the disk drive 310 may include a cache 315. The datastorage device 305 also may include a processor 320, a timer or clock325 and a system information storage 330.

Data on the data storage device 305 (e.g., on the disk drive 310) may beaccessed (e.g., read/written) by a processor of a computing device (notshown). The data may be accessed via communication with the processor320 of the data storage device 305, or directly from/to the disk drive310. In either case, accesses of data on the disk drive 310 may betracked by the processor 320 to determine hot areas (e.g., frequentlyaccessed area nodes) of the disk drive 310, such as described herein.

In some examples, the processor 320 may be configured to track accessesof area nodes based on time intervals using the timer/clock 325. Asdescribed herein, the timer/clock 325 may be used to determine a seriesof time intervals. During each time interval, the processor 320 maytrack accesses of data according to the area nodes of the disk drive310. The processor 320 may implement a time-weighted scoring techniqueto allow the area nodes to be evaluated for hot areas.

The processor 320 may increase a score of an area node each time thatarea node is accessed during a given time interval. For example, anexisting score of the accessed area node may be increased by apredetermined or base score. Of course, there may not be an existingscore for the accessed area node (e.g., the area node was not previouslyaccessed or the score of the area node was dropped (such as from a tableof limited space, or the prior score was too low to matter)). In suchcase, the score of the accessed area node may be set to the base score,with the score being increased by the base score for each subsequentaccess of that area node during the given time interval.

At an end of the given time interval, the processor 320 may decrease theexisting score of each area node. For example, each existing score maybe decremented by a predetermined value, or may be decrease bymultiplying the score by a predetermined factor. The value or factor maybe predetermined or fixed, for example, for time intervals of uniformlength. Alternatively, the value or factor may vary based on a length ofthe given time interval.

Also at the end of the given time interval, the processor 320 may saveeach existing score for the respective area node(s) in the systeminformation storage 330. Although the system information storage 330 isshown as a separate component, it should be understood that the systeminformation storage 330 may be implemented as part of the disk drive 310as well.

Saving the scores for area nodes in the system information storage 330makes the scores available for the next time interval to providecumulative scoring. This also may make the scores available after thedata storage device 305 is turned off and restarted. Thus, the existingscores may be available upon boot up of the data storage device 305 tocontinue tracking of hot areas even when the data storage device has notbeen in use (e.g., powered off) for some time.

It should be understood that the various features described above withrespect to FIGS. 1, 2 and/or 3 may be combined to achieve otherconfigurations as well. Thus, the examples described above are intendedto be illustrative and not exhaustive.

The components of the computing device 210 described with respect toFIG. 2 and those of the data storage device 305 may, individually orcollectively, be implemented using one or more application-specificintegrated circuits (ASICs) adapted to perform some or all of theapplicable functions in hardware. Alternatively, the functions may beperformed by one or more other processing units (or cores), on one ormore integrated circuits. In other embodiments, other types ofintegrated circuits may be used (e.g., Structured/Platform ASICs, FieldProgrammable Gate Arrays (FPGAs), and other Semi-Custom ICs), which maybe programmed in any manner known in the art. The functions of each unitmay also be implemented, in whole or in part, with instructions embodiedin a memory, formatted to be executed by one or more general orapplication-specific processors.

In some implementations, the processor 215 may be a central processingunit (CPU) of the computing device 210. The processor 215 may beconfigured to control or otherwise cooperate with the data storage drive205 and the I/O interface 220 to carry out various operations of thecomputing device 210 in connection with the data access trackingfeatures described herein. The processor 215 may also be configured tocarry out other functions of the computing device 210 by controllingthese and/or other components that may be included in the computingdevice 210 according to its design.

FIG. 4 is a flowchart illustrating an example of a method 400 ofdetermining use of areas of a disk drive, in accordance with variousaspects of the present disclosure. For clarity, the method 400 isdescribed below with reference to aspects of the computing system 100described with reference to FIG. 1, and/or the computing device 210described with reference to FIG. 2, and/or the data storage device 305described with reference to FIG. 3. In some implementations, a processorof such may execute one or more sets of codes to control the functionalelements of the computing device and/or the data storage device/drive toperform the functions described below.

At block 405, a score of an area node of the disk drive (or data storagedevice) may be increased each time the area node is accessed during atime interval of a series of time intervals. Thus, each data accessduring the time interval is taken into account. For each area node ofthe disk drive having an existing score, at block 410, the existingscore is decreased based on an elapse of the time interval (e.g., at anend of the time interval). Thus, each existing score is time-weighted totake into account how recently (e.g., within which time interval) thedata accesses occurred. A length for the individual time intervals maybe selected (e.g., set) to determine how the decrease represents oraccounts for the recentness of each data access. As noted above, idletime within a particular time interval may be taken into account byadjusting the decreasing factor appropriately.

At block 415, the existing score of each area node may be saved at theend of the time interval. As described herein, the saved scores may beused to determine hot areas at the end of the time interval. The savedscores also may allow cumulative scoring over a plurality of the timeintervals, with hot area assessment being performed at the end of any orall of the time intervals.

FIG. 5 is a flowchart illustrating another example of a method 500 ofdetermining use of areas of a disk drive, in accordance with variousaspects of the present disclosure. For clarity, the method 500 isdescribed below with reference to aspects of the computing system 100described with reference to FIG. 1, and/or the computing device 210described with reference to FIG. 2, and/or the data storage device 305described with reference to FIG. 3. In some implementations, a processorof such may execute one or more sets of codes to control the functionalelements of the computing device and/or the data storage device/drive toperform the functions described below.

At block 505, a time interval may be initiated, for example, using thetimer/clock 325 of the data storage device 305, or using an internaltimer or clock (not shown) of the computing device 210 or of one of thecomputing devices 110.

At block 510, a data access of an area node may be determined. Then, atblock 515, whether a score for the accessed area node exists may bedetermined. The existing score may be for the exact (e.g., hit) areanode (e.g., by LBA and length). If so, the method may proceed to block520, where the existing score for the accessed area node may beincreased (e.g., incremented by a base score). The method may then jumpto block 550, where whether the time interval has elapsed or ended maybe determined. If so, the method may continue to block 555, where allexisting scores for area nodes are decreased (e.g., decremented ormultiplied by a factor less than one) and an ordered list (e.g., basedon scores) may be generated. Also, upon elapse of the time interval, themethod may return to block 505 for initiation of the next time interval.Otherwise, if the time interval has not ended, the method may return toblock 510.

Although not illustrated, an operation of monitoring for data accessesmay occur before block 510. Further, another instance of determiningwhether the time interval has elapsed/ended may occur so that the methodmay reach block 555 even if no (further) data access is determined atblock 510. Such features are not shown for the sake of simplicity andclarity of the flowchart.

If no existing score for the accessed area node is determined at block515, the method may jump to block 525, where whether the accessed areanode overlaps with an area node having an existing score is determined.If so, then the method may proceed to block 530, where the area nodewith the existing score may be split into multiple area nodes withseparate scores, the score of the overlapping area node being increased(e.g., incremented) and the existing score being maintained for thesplit area node(s). Examples of such splitting are described furtherbelow. The method may then jump to block 550 and so on, such asdescribed above.

If no overlap is determined to exist between the accessed area node andan area node having an existing score at block 525, the method may jumpto block 535, where whether the accessed area node is adjacent to anarea node having an existing score is determined. If so, then the methodmay proceed to block 540, where the accessed area node may be mergedwith the area node having the existing score, with the existing scorebeing maintained for the merged area node. An examples of such mergingis described further below. The method may then jump to block 550 and soon, such as described above.

If the accessed area node is determined not to be adjacent to an areanode having an existing score at block 535, the method may jump to block545, where a score may be established for the accessed area node (e.g.,base score as described herein). Then the method may continue to block550 and so on, such as described above.

An example of an implementation of a scoring algorithm and determininghot areas, in accordance with various aspects of the present disclosure,is illustrated by the series of diagrams in FIGS. 6A-6L. Turning firstto FIG. 6A, actions occurring within a first time interval 605 areillustrated. A host command or first data access 610-a may occur for anarea node with an LBA of 500 and a length of 20. As this area node doesnot have an existing score, a first entry 615-a may be added to a firsttable 620 of hot area candidates. The first table 620 (candidate scoretable) may include fields 625 and 630 identifying the accessed area nodeby the starting LBA and the length, respectively. Further, the table mayinclude a field 635 for a score of the candidate area nodes. In thisexample, the score of the area node corresponding to the first dataaccess 610-a is set to a base score of 1000.

FIG. 6B illustrates further actions occurring within the first timeinterval 605. Another host command or second data access 610-b may occurfor an area node with an LBA of 300 and a length of 50. As this areanode does not have an existing score, a second entry 615-b may be addedto the first table 620 of hot area candidates. The score of the areanode corresponding to the second data access 610-a may be set to thebase score of 1000.

FIG. 6C illustrates further actions occurring within the first timeinterval 605. A third data access 610-c may occur for an area node withan LBA of 650 and a length of 10. As this area node does not have anexisting score, a third entry 615-c may be added to the first table 620.The score of the area node corresponding to the third data access 610-calso may be set to the base score of 1000.

FIG. 6D illustrates further actions occurring within the first timeinterval 605. A fourth data access 610-d may occur for an area node withan LBA of 500 and a length of 10. As this area node overlaps with thearea node of entry 615-a shown in FIG. 6C (LBA 500, length 20, score1000), the area node of entry 615-a may be split into two entries,namely an entry (modified entry 615-a) corresponding to the overlap anda fourth entry 615-d corresponding to a remainder of the area node ofthe fourth data access 610-d. The score of the entry 615-a correspondingto the overlap may be increased to 2000, for example, by adding the basescore to the previously existing score. The score of the fourth entry615-d may be set to the existing score of the prior entry 615-a, 1000.Although not illustrated by this example, if a new area node includes anarea node with an existing score, the new area node may be split withthe new part getting the base score, and the old part getting theexisting score plus the base score.

FIG. 6E illustrates further actions occurring within the first timeinterval 605. A fifth data access 610-e may occur for an area node withan LBA of 320 and a length of 10. As this area node overlaps with thearea node of entry 615-b shown in FIG. 6D (LBA 300, length 50, score1000), the area node of entry 615-b may be split into three entries,namely an entry (modified entry 615-b) corresponding to the overlap andfifth and sixth entries 615-e′ and 615-e ² corresponding to a remainderof the area node of the second data access 610-b. The score of the entry615-b corresponding to the overlap may be increased to 2000, forexample, by adding the base score to the previously existing score. Thescore of the fifth and sixth entries 615-e ¹ and 615-e ² both may be setto the previously existing score of entry 615-b, 1000.

FIG. 6F illustrates further actions occurring within the first timeinterval 605. A sixth data access 610-f may occur for an area node withan LBA of 500 and a length of 10. As a score for this area node exists(e.g., an exact match or hit) in entry 615-a shown in FIG. 6E (LBA 500,length 10, score 2000), the score of entry 615-a may be increased to3000, for example, by adding the base score to the previously existingscore.

FIG. 6G illustrates further actions occurring within the first timeinterval 605. A seventh data access 610-g may occur for an area nodewith an LBA of 660 and a length of 10. As this area node is adjacent tothe area node of entry 615-c shown in FIG. 6F (LBA 650, length 10, score1000), the area node of entry 615-c may be merged or combined with thisnewly accessed area node to modify the entry 615-c as shown in FIG. 6G.As the merged/combined area node corresponding to the modified entry615-c has been accessed only once, the score of entry 615-c may bemaintained at 1000.

FIG. 6H illustrates further actions occurring for the first timeinterval 605. A host command or first indication 640 of an elapse or endof the first time interval may occur. At this time, the existing scoresof the entries in the first table 620 may be decreased. In this example,the existing scores are decreased by multiplication with a factor or0.9. Thus, the existing score of 3000 of the entry 615-a shown in FIG.6G is decreased to 2700 as shown in FIG. 6H, the existing score of 2000of the entry 615-b shown in FIG. 6G is decreased to 1800 as shown inFIG. 6H, and so on.

Optionally, hot areas of the disk drive may be assessed or determinedbased on the existing scores at the end of the first time interval 605.As illustrated in FIG. 6H, hot areas may be determined via and orderedlist or second table 650. The second table 650 may include fields 655and 660 identifying the hot area nodes by starting LBA and length,respectively. In this example, a first hot area 665-a (LBA 500, length10) has a score of 2700 in the first table 620. A second hot area 665-b(LBA 320, length 10) has a score of 1800 in the first table 620, and athird hot area 665-c (LBA 650, length 10) has a score of 900.

The hot areas may be determined based on a desired or certain number ofarea nodes to be considered hot areas, three in the example of FIG. 6H.As multiple area nodes have a same score of 900, the third hot area665-c may be determined to be a hot area in any suitable manner. Forexample, the third hot area 665-c may be determined based on the datastructure of the first table 620—the third hot area 665-c being selectedas being found first in the first table 620. Alternatively oradditionally, the third hot area 665-c may be determined based on therecentness of the corresponding seventh data access 610-g shown in FIG.6G. Alternatively, the third hot area 665-c may be determined randomlyfrom the area nodes with equal scores. However, if an index of the table620 is based on the start LBA, then area node 615-e ¹ may be determinedto be the third hot area.

The hot areas also may be determined based on a desired or certain size(e.g., total number of blocks) of the area nodes to be considered hotareas. For example, if a cache is to be partially filled up to a certainlimit with important or valuable data (e.g., corresponding to hotareas), then the hot areas may be determined to fit within that limit orthreshold. In the example of FIG. 6H, the limit may be 40 blocks ofdata, such that only the data blocks of hot areas 665-a, 665-b and 665-cwith fit within the limit.

FIG. 6I illustrates actions occurring within a second time interval 670,subsequent to the first time interval 605. The entries of the firsttable 620 may be maintained from the end of the first interval afterdecreasing the scores accordingly. An eighth data access 610-h may occurfor an area node with an LBA of 320 and a length of 10. As a score forthis area node exists in entry 615-b shown in FIG. 6H (LBA 320, length10, score 1800), the score of entry 615-b may be increased to 2800, forexample, by adding the base score to the previously existing score.

FIG. 6J illustrates further actions occurring within the second timeinterval 670. A ninth data access 610-i may occur for an area node withan LBA of 300 and a length of 50. As this area node overlaps entirelywith entries 615-b, 615-e ¹ and 615-e ² shown in FIG. 6H (LBA 320,length 10, score 2800; LBA 300, length 20, score 900; and, LBA 330,length 20, score 900), the scores of each of these entries 615-b-b,615-e ¹ and 615-e ² may be increased to 3800, 1900 and 1900,respectively, by adding the base score to the previously existingscores.

FIG. 6K illustrates further actions occurring within the second timeinterval 670. A tenth data access 610-j may occur for an area node withan LBA of 700 and a length of 20. As this area node does not have anexisting score, a seventh entry 615-j may be added to the first table620. The score of the area node corresponding to the tenth data access610-j may be set to the base score of 1000.

FIG. 6L illustrates further actions occurring for the second timeinterval 670. A host command or second indication 675 of an elapse orend of the second time interval may occur. At this time, the existingscores of the entries in the first table 620 may be decreased. In thisexample, the existing scores are decreased by multiplication with afactor or 0.9. Thus, the existing score of 2700 of the entry 615-a shownin FIG. 6K is decreased to 2430 as shown in FIG. 6L, the existing scoreof 3800 of the entry 615-b shown in FIG. 6K is decreased to 3420 asshown in FIG. 6L, and so on. As discussed above, hot areas of the diskdrive may be assessed or determined based on the existing scores at theend of the second time interval 670, whether or not hot areas aredetermined at the end of the first time interval 605.

The foregoing description of the implementation of a scoring algorithmand determining hot areas illustrated by the series of diagrams in FIGS.6A-6L may be for data accesses that are read only. A separateimplementation may be employed for data accesses that are write only. Asdiscussed above, tracking hot areas for each type of data accesses mayprovide useful information for data storage operations.

The detailed description set forth above in connection with the appendeddrawings describes exemplary embodiments and does not represent the onlyembodiments that may be implemented or that are within the scope of theclaims. The detailed description includes specific details for thepurpose of providing an understanding of the described techniques. Thesetechniques, however, may be practiced without these specific details. Insome instances, well-known structures and devices are shown in blockdiagram form in order to avoid obscuring the concepts of the describedembodiments.

Information and signals may be represented using any of a variety ofdifferent technologies and techniques. For example, data, instructions,commands, information, signals, bits, symbols, and chips that may bereferenced throughout the above description may be represented byvoltages, currents, electromagnetic waves, magnetic fields or particles,optical fields or particles, or any combination thereof.

The various illustrative blocks and modules described in connection withthe disclosure herein may be implemented or performed with ageneral-purpose processor, a digital signal processor (DSP), anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA) or other programmable logic device, discrete gate ortransistor logic, discrete hardware components, or any combinationthereof designed to perform the functions described herein. Ageneral-purpose processor may be a microprocessor, but in thealternative, the processor may be any conventional processor,controller, microcontroller, or state machine. A processor may also beimplemented as a combination of computing devices, e.g., a combinationof a DSP and a microprocessor, multiple microprocessors, one or moremicroprocessors in conjunction with a DSP core, or any other suchconfiguration.

The functions described herein may be implemented in hardware, softwareexecuted by a processor, firmware, or any combination thereof. Ifimplemented in software executed by a processor, the functions may bestored on or transmitted over as one or more instructions or code on acomputer-readable medium. Other examples and implementations are withinthe scope and spirit of the disclosure and appended claims. For example,due to the nature of software, functions described above can beimplemented using software executed by a processor, hardware, firmware,hardwiring, or combinations of any of these. Features implementingfunctions may also be physically located at various positions, includingbeing distributed such that portions of functions are implemented atdifferent physical locations. Also, as used herein, including in theclaims, “or” as used in a list of items (for example, a list of itemsprefaced by a phrase such as “at least one of” or “one or more of”)indicates a disjunctive list such that, for example, a list of “at leastone of A, B, or C” means A or B or C or AB or AC or BC or ABC (i.e., Aand B and C).

Computer-readable media includes both computer storage media andcommunication media including any medium that facilitates transfer of acomputer program from one place to another. A storage medium may be anyavailable medium that can be accessed by a general purpose or specialpurpose computer. By way of example, and not limitation,computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium that can be used to carry or store desiredprogram code means in the form of instructions or data structures andthat can be accessed by a general-purpose or special-purpose computer,or a general-purpose or special-purpose processor. Also, any connectionis properly termed a computer-readable medium. For example, if thesoftware is transmitted from a website, server, or other remote sourceusing a coaxial cable, fiber optic cable, twisted pair, digitalsubscriber line (DSL), or wireless technologies such as infrared, radio,and microwave, then the coaxial cable, fiber optic cable, twisted pair,DSL, or wireless technologies such as infrared, radio, and microwave areincluded in the definition of medium. Disk and disc, as used herein,include compact disc (CD), laser disc, optical disc, digital versatiledisc (DVD), floppy disk and blu-ray disc where disks usually reproducedata magnetically, while discs reproduce data optically with lasers.Combinations of the above are also included within the scope ofcomputer-readable media.

The previous description of the disclosure is provided to enable aperson skilled in the art to make or use the disclosure. Variousmodifications to the disclosure will be readily apparent to thoseskilled in the art, and the generic principles defined herein may beapplied to other variations without departing from the scope of thedisclosure. Throughout this disclosure the term “example” or “exemplary”indicates an example or instance and does not imply or require anypreference for the noted example. Thus, the disclosure is not to belimited to the examples and designs described herein but is to beaccorded the widest scope consistent with the principles and novelfeatures disclosed herein.

What is claimed is:
 1. A computing device configured to determine use ofareas of a disk drive, comprising: a processor; memory in electroniccommunication with the processor, wherein the memory stores computerexecutable instructions that when executed by the processor cause theprocessor to perform the steps of: initiating a time interval;identifying a data access of a first accessed area node of the diskdrive; determining whether a score for the first accessed area nodeexists; upon determining the score for the first accessed area node doesnot exist, determining whether the first accessed area node overlapswith one or more other area nodes having an existing score, wherein theone or more other area nodes includes a second area node; and upondetermining the first accessed area node overlaps with the second areanode, splitting the second area node into at least a first split areanode and a second split area node.
 2. The computing device of claim 1,wherein the instructions executed by the processor cause the processorto perform the step of: upon determining the first accessed area nodeoverlaps with the second area node, incrementing the score of the firstaccessed area node.
 3. The computing device of claim 1, wherein theinstructions executed by the processor cause the processor to performthe steps of: upon determining the first accessed area node overlapswith the second area node, maintaining the score of the second area nodein each split area node derived from the second area node, including atleast the first split area node and the second split area node.
 4. Thecomputing device of claim 1, wherein the instructions executed by theprocessor cause the processor to perform the steps of: upon determiningthe score for the first accessed area node exists, incrementing thescore of the first accessed area node by a base score.
 5. The computingdevice of claim 1, wherein the instructions executed by the processorcause the processor to perform the steps of: upon determining the firstaccessed area node does not overlap at least one other area node with anexisting score, determining whether the first accessed area node isadjacent to at least one of the one or more other area nodes having anexisting score.
 6. The computing device of claim 5, wherein theinstructions executed by the processor cause the processor to performthe steps of: upon determining the first accessed area node is adjacentto a third area node having an existing score, merging the firstaccessed area node with the third area node and maintaining the score ofthe third area node for the merged first and third area nodes.
 7. Thecomputing device of claim 5, wherein the instructions executed by theprocessor cause the processor to perform the steps of: upon determiningthe first accessed area node is not adjacent to at least one other areanode with an existing score, assigning a base score to the firstaccessed area node.
 8. The computing device of claim 1, wherein theinstructions executed by the processor cause the processor to performthe steps of: determining whether the time interval has elapsed orended.
 9. The computing device of claim 8, wherein the instructionsexecuted by the processor cause the processor to perform the steps of:upon determining the time interval has elapsed or ended, decrementingthe score of every area node with an existing score, generating anordered list of every area node ordered according to each decrementedscore, and reinitiating the time interval.
 10. The computing device ofclaim 8, wherein the instructions executed by the processor cause theprocessor to perform the steps of: upon determining the time intervalhas not elapsed or ended, identifying a data access of a second accessedarea node of the disk drive, wherein each of the one or more other areanodes having an existing score are included in a table of hot areacandidates.
 11. A method to determine use of areas of a disk drive,comprising: initiating a time interval; identifying a data access of afirst accessed area node of the disk drive; determining whether a scorefor the first accessed area node exists; upon determining the score forthe first accessed area node does not exist, determining whether thefirst accessed area node overlaps with one or more other area nodeshaving an existing score, wherein the one or more other area nodesincludes a second area node; and upon determining the first accessedarea node overlaps with the second area node, splitting the second areanode into at least a first split area node and a second split area node.12. The method of claim 11, comprising: upon determining the firstaccessed area node overlaps with the second area node, incrementing thescore of the first accessed area node.
 13. The method of claim 11,comprising: upon determining the first accessed area node overlaps withthe second area node, maintaining the score of the second area node ineach split area node derived from the second area node, including atleast the first split area node and the second split area node.
 14. Themethod of claim 11, comprising: upon determining the score for the firstaccessed area node exists, incrementing the score of the first accessedarea node by a base score.
 15. The method of claim 11, comprising: upondetermining the first accessed area node does not overlap at least oneother area node with an existing score, determining whether the firstaccessed area node is adjacent to at least one of the one or more otherarea nodes having an existing score.
 16. The method of claim 15,comprising: upon determining the first accessed area node is adjacent toa third area node having an existing score, merging the first accessedarea node with the third area node and maintaining the score of thethird area node for the merged first and third area nodes.
 17. Themethod of claim 15, comprising: upon determining the first accessed areanode is not adjacent to at least one other area node with an existingscore, assigning a base score to the first accessed area node.
 18. Themethod of claim 11, comprising: determining whether the time intervalhas elapsed or ended; upon determining the time interval has elapsed orended, decrementing the score of every area node with an existing score,generating an ordered list of every area node ordered according to eachdecremented score, and reinitiating the time interval; and upondetermining the time interval has not elapsed or ended, identifying adata access of a second accessed area node of the disk drive, whereineach of the one or more other area nodes having an existing score areincluded in a table of hot area candidates.
 19. A non-transitorycomputer-readable storage medium storing computer executableinstructions that when executed by a processor cause the processor toperform the steps of: initiating a time interval; identifying a dataaccess of a first accessed area node of the disk drive; determiningwhether a score for the first accessed area node exists; upondetermining the score for the first accessed area node does not exist,determining whether the first accessed area node overlaps with one ormore other area nodes having an existing score, wherein the one or moreother area nodes includes a second area node, and wherein each of theone or more other area nodes are included in a table of hot areacandidates; and upon determining the first accessed area node overlapswith the second area node, splitting the second area node into at leasta first split area node and a second split area node.
 20. Thecomputer-program product of claim 19, wherein the instructions executedby the processor cause the processor to perform the steps of: upondetermining the first accessed area node overlaps with the second areanode, incrementing the score of the first accessed area node.